1. Field of the Invention
The present invention relates to a robot controlling apparatus and method therefor, and more particularly to a robot controlling apparatus and method which can simplify calculations of velocity commands.
2. Description of the Background Art
An example of a robot controlling apparatus known in the art is shown in FIG. 6, wherein a program and data storage section 1 is used for storing user-written programs and position variable data generated by teaching or manual data input. An instruction decoder section 2 is connected for decoding the instructions of a program read from the program storage section 1, and supplying decoded instructions to a target position generator section 3, which generates a position variable .theta..sub.id which represents a target position when the instruction decoded is concerned with a traveling operation. Each axis i of a robot R may be separately identified, e.g. i=1, 2, 3, 4, 5, 6 for a six-axis robot. The movement of the robot along each axis is specified in terms of a rotational movement for purposes of explanation, since movement ordinarily is provided by a motor.
A position controller 54, comprising a permissible axis travel velocity generator section 55 for generating a permissible axis travel velocity .omega..sub.i, a velocity command generator section 56 for generating a velocity command d.theta..sub.i for each axis at intervals of .DELTA.t time, and a position command generator section 7 that is responsive to the velocity command d.theta..sub.i, is operative to generate a position command .theta..sub.i at intervals of .DELTA.t time. A coordinate converter section 8 converts the position command .theta..sub.i generated by the position controller 54 into an appropriate number of drive motor pulses J.sub.i of each axis of the robot R. A positioning controller section 9 is responsive to the number of drive motor pulses J.sub.i and positions each of the corresponding i axes of the robot R accordingly. A subtracter 10 is responsive to the target value .theta..sub.id and calculated value .theta..sub.ic output from command generator section 7 to generate a difference travel value .DELTA..theta..sub.i for each axis.
The operation of the robot controlling apparatus will now be described. When a program is selected to be executed from among a plurality of programs stored in the program storage device 1, the instruction decoder section 2 initiates the decoding of instructions in that program. When information obtained by the instruction decoding is an instruction concerned with the traveling operation of the robot R, the instruction decoder section 2 commands the target position generator section 3 to generate a target position .theta..sub.id. This command causes the target position generator section 3 to generate the target position .theta..sub.id.
The permissible axis travel velocity generator section 55 in the position controller 54 calculates a permissible axis travel velocity .omega..sub.i from a maximum permissible axis angular velocity .omega..sub.im stipulated from the drive motor of each axis and an override factor (specified by a percentage of the maximum permissible angular velocity) Ov: EQU .omega..sub.i =O.sub.v .multidot..omega..sub.im ( 1)
The velocity command generator section 56 in the position controller 54 performs velocity control and locus control concerned with the traveling operation of the robot in accordance with the target position .theta..sub.id and permissible axis travel velocity .omega..sub.i.
The velocity control and locus control are carried out by sampling control, i.e. the following processing is performed at certain time intervals .DELTA.t, generating the velocity command d.theta..sub.i.
First, the travel value .DELTA..theta..sub.i of each axis is calculated from the target position .theta..sub.id and a preceding position command .theta..sub.i ( for convenience of explanation, this is represented as .theta..sub.ic): EQU .DELTA..theta..sub.i =.theta..sub.id -.theta..sub.ic ( 2)
Travel time t.sub.i of each axis is then calculated from the travel value .DELTA..theta..sub.i and permissible axis travel velocity .omega..sub.i of each axis: EQU t.sub.i =.DELTA..theta..sub.i /.omega..sub.i ( 3)
The maximum travel time for all axes is then identified: EQU t.sub.m =max(t.sub.i) (4)
In the meantime, to start the travel of each axis simultaneously and terminate the travel at the same time, all the axes are moved with their respective travel values .DELTA..theta..sub.i during that travel time t.sub.i which is a maximum value. Hence, the permissible axis travel velocity of each axis is compensated for to calculate a maximum axis interpolation velocity V.sub.i : EQU V.sub.i =.omega..sub.i t.sub.i /t.sub.m ( 5)
A velocity command d.theta..sub.i in the next .DELTA.t time is then calculated from the given acceleration velocity a.sub.i and deceleration velocity d.sub.i of each axis and the maximum axis interpolation velocity V.sub.i. Namely, supposing that the velocity of each axis is controlled as shown in FIG. 7 which illustrates acceleration/deceleration control, the next velocity command d.theta..sub.i is found as follows, judging from a preceding velocity command d.theta..sub.ic and the remaining travel value, if the area of the next velocity command d.theta..sub.i is an acceleration region: EQU d.theta..sub.i =d.theta..sub.ic +a.sub.i ( 6)
where an initial value is zero.
If that area is a constant-velocity region: EQU d.theta..sub.i =V.sub.i ( 7)
If it is a deceleration region: EQU d.theta..sub.i =d.theta..sub.ic -d.sub.i ( 8)
The velocity command d.theta..sub.i is generated as described above.
The position command generator section 7 in the position controller 54 generates the position command .theta..sub.i of each axis in the next .DELTA.t time according to the velocity command d.theta..sub.i : EQU .theta..sub.i =.theta..sub.ic +d.theta..sub.i ( 9)
The coordinate converter section 8 converts the position command .theta..sub.i into the number of drive motor pulses Ji of each axis of the robot R and passes the result to the positioning controller section 9. The positioning controller section 9 outputs the number of drive motor pulses Ji of each axis to the motor of each axis of the robot R via a built-in digital-to-analog converter. This moves the robot R to the position of the position command .theta..sub.i.
With the exception of expression (4), the expressions (1) to (9) are all those of vector calculation. That is, vector calculations are made a total of eight times per sampling. In the robot controlling apparatus of the background art, therefore, the greater the number of articulated axes that the robot has, the more calculations it has to make, taking much processing time. Also, where target positions in a three-dimensional space represented by a cartesian coordinate system are to be generated or target positions in a three-dimensional space represented by a cylindrical coordinate system are to be generated (interpolation in a three-dimensional space system), the robot cannot be controlled consistently since the concepts of interpolation velocities in such coordinate systems differ from each other. Further, control will be complex in an articulate mechanism where axis interference occurs.
As another related background art, a robot controlling process is disclosed in Japanese Patent Disclosure Publication No. 262212 of 1985. This controlling process determines a velocity by multiplying a maximum permissible velocity by a velocity factor calculated according to the parameters of a corner on the traveling path of a robot. However, the robot controlling process disclosed in Japanese Patent Disclosure Publication No. 262212/1985 is designed specifically for a traveling operation at a corner and is not appropriate for the control of a general traveling operation.
In the conventional robot controlling apparatus described as constructed above, calculations for velocity and position controls increase for a robot having many articulated axes, requiring much processing time. Further, when axes other than the robot's (additional axes) as well as the robot's axes are to be controlled by a single controlling apparatus, not only are the number of calculations increased but the travel paths of the robot axes must be synchronized with those of the additional axes.